package org.wu.framework.authorization.platform.domain.model.sys.permission;

import org.wu.framework.authorization.platform.application.dto.SysPermissionDTO;
import org.wu.framework.web.response.Result;
import org.wu.framework.web.response.ResultFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.wu.framework.authorization.platform.domain.model.sys.permission.SysPermission;
import java.util.List;
import org.wu.framework.lazy.orm.database.lambda.domain.LazyPage;
/**
 * describe 系统权限 
 *
 * @author Jia wei Wu
 * @date 2025/08/03 01:55 下午
 * @see org.wu.framework.lazy.orm.core.persistence.reverse.lazy.ddd.DefaultDDDLazyDomainRepository 
 **/

public interface SysPermissionRepository {


    /**
     * describe 新增系统权限
     *
     * @param sysPermission 新增系统权限     
     * @return {@link  Result<SysPermission>} 系统权限新增后领域对象     
     
     * @author Jia wei Wu
     * @date 2025/08/03 01:55 下午
     **/

    Result<SysPermission> story(SysPermission sysPermission);

    /**
     * describe 批量新增系统权限
     *
     * @param sysPermissionList 批量新增系统权限     
     * @return {@link Result<List<SysPermission>>} 系统权限新增后领域对象集合     
     
     * @author Jia wei Wu
     * @date 2025/08/03 01:55 下午
     **/

    Result<List<SysPermission>> batchStory(List<SysPermission> sysPermissionList);

    /**
     * describe 查询单个系统权限
     *
     * @param sysPermission 查询单个系统权限     
     * @return {@link Result<SysPermission>} 系统权限DTO对象     
     
     * @author Jia wei Wu
     * @date 2025/08/03 01:55 下午
     **/

    Result<SysPermission> findOne(SysPermission sysPermission);

    /**
     * describe 查询多个系统权限
     *
     * @param sysPermission 查询多个系统权限     
     * @return {@link Result<List<SysPermission>>} 系统权限DTO对象     
     
     * @author Jia wei Wu
     * @date 2025/08/03 01:55 下午
     **/

    Result<List<SysPermission>> findList(SysPermission sysPermission);


    Result<List<SysPermissionDTO>> findScanPermission();
    /**
     * describe 分页查询多个系统权限
     *
     * @param size 当前页数
     * @param current 当前页
     * @param sysPermission 分页查询多个系统权限     
     * @return {@link Result<LazyPage<SysPermission>>} 分页系统权限领域对象     
     
     * @author Jia wei Wu
     * @date 2025/08/03 01:55 下午
     **/

    Result<LazyPage<SysPermission>> findPage(int size,int current,SysPermission sysPermission);

    /**
     * describe 删除系统权限
     *
     * @param sysPermission 删除系统权限     
     * @return {@link Result<SysPermission>} 系统权限     
     
     * @author Jia wei Wu
     * @date 2025/08/03 01:55 下午
     **/

    Result<SysPermission> remove(SysPermission sysPermission);

    /**
     * describe 是否存在系统权限
     *
     * @param sysPermission 是否存在系统权限     
     * @return {@link Result<Boolean>} 系统权限是否存在     
     
     * @author Jia wei Wu
     * @date 2025/08/03 01:55 下午
     **/

    Result<Boolean> exists(SysPermission sysPermission);

}